Imports System.Data.SqlClient
Imports System.Drawing
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraEditors
Imports DevExpress.XtraScheduler
Imports DevExpress.XtraScheduler.UI
Imports DevExpress.XtraEditors.Repository

'--- Created Date On : 15-Nov-2010 (Jagdish)

Public Class frmInventoryLookup
    Dim mstrMode As String
    Public blnAdd As Boolean, blnEdit As Boolean, blnDelete As Boolean, blnLocked As Boolean
    Dim mlngRecordID As Long
    Dim blnUnload As Boolean
    Dim mblnChanged As Boolean
    Dim mblnActivate As Boolean
    Dim mblnExpanded As Boolean = False
    Dim mblnAutoSize As Boolean = True
    Dim mblnCancelDisplay As Boolean
    Public mblnFrmOutside As Boolean = False
    Public mstrItemName As String
    Dim mstrTableName As String = ""
    Dim mstrGroupType As String = ""
    Dim mstrFieldName As String = ""
    Dim mstrIdFieldName As String = ""
    Public mstrMenuList()() As String    'Keeps menu details (Jagged Arrays)


    Private Sub initializeMenu()
        Try
            'Middle -1 Group
            'Middle -2 Locked

            'Last -1 Checked
            If Me.Tag.ToString = "Units" Then
                ReDim mstrMenuList(2)

                mstrMenuList(0) = New String() {"Main", 1, 0, "Main"}

                mstrMenuList(1) = New String() {Me.Tag.ToString, 2, 1, "Units"}



            ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then

                ReDim mstrMenuList(2)

                mstrMenuList(0) = New String() {"Main", 1, 0, "Main"}

                mstrMenuList(1) = New String() {Me.Tag.ToString, 2, 1, "Category"}
            End If

            'Call UpdateArrayFieldSettings(Me)

        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub frmInventoryLookup_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Try
            If mblnActivate = True Then
                mblnActivate = False

                pbRecords.Visible = True
                pbRecords.BringToFront()
                Application.DoEvents()
                pbRecords.Position = 20

                Call PopulateData()

                pbRecords.Position = 100
                pbRecords.Visible = False

                grdRecords.Focus()
                If mblnFrmOutside = True Then
                    btnAdd_Click(Nothing, Nothing)
                    If mstrItemName = "" Then
                        If Me.Tag.ToString = "Units" Then
                            txtUnit.Text = ""
                            txtUnit.Focus()
                        ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then
                            txtCategoryName.Text = ""
                            txtCategoryName.Focus()
                        End If
                    Else
                        If Me.Tag.ToString = "Units" Then
                            txtUnit.Text = mstrItemName
                            btnSave.Focus()
                        ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then
                            txtCategoryName.Text = mstrItemName
                            btnSave.Focus()
                        End If
                    End If
                    
                End If
            End If
        Catch ex As Exception
            pbRecords.Visible = False
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub frmInventoryLookup_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            Dim intUnload As DialogResult

            If mblnChanged = True And mstrMode <> "" Then
                intUnload = MessageBox.Show("You have not saved your changes to the record. Do you want to save your changes now?", gstrMessage, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
                If intUnload = Windows.Forms.DialogResult.Cancel Then
                    e.Cancel = True : Exit Sub
                ElseIf intUnload = Windows.Forms.DialogResult.Yes Then
                    blnUnload = True
                    If blnSaveRecords() = False Then
                        e.Cancel = True
                        blnUnload = False
                        Exit Sub
                    End If
                    mblnChanged = False
                End If
            End If
            blnUnload = False

        Catch ex As Exception
            blnUnload = False
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub frmInventoryLookup_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        mblnCancelDisplay = True
        If blnKeyTrap(e.KeyCode, Me, True, grdRecords) = True Then mblnCancelDisplay = False : Exit Sub
        mblnCancelDisplay = False

        If e.KeyCode = Keys.F5 Then gdvRecords_FocusedRowChanged(Nothing, Nothing)
        pbRecords.Visible = False
    End Sub

    Private Sub frmInventoryLookup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Call SetImageControl(Me)

            Call btnExpand_Click(Me, e)

            If Me.Tag.ToString = "Units" Then
                Me.Icon = System.Drawing.Icon.FromHandle(CType(mdiMain.imgFormIcons.Images(2), Bitmap).GetHicon())
                Call GetAccessPermission(Me, "frmMasterInventoryUnits")
                mstrTableName = "tblInventoryUnits"
                mstrGroupType = "Units"
                mstrFieldName = "Units"
                mstrIdFieldName = "UnitId"
                grbUnit.Visible = True
                grbCategory.Visible = False
                grbUnit.BringToFront()
            ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then
                Me.Icon = System.Drawing.Icon.FromHandle(CType(mdiMain.imgFormIcons.Images(2), Bitmap).GetHicon())

                mstrTableName = "tblCategory"
                If Me.Tag.ToString = "Category" Then
                    Call GetAccessPermission(Me, "frmMasterInventoryCategory")
                    mstrGroupType = "Category Details"
                ElseIf Me.Tag.ToString = "Fixed Asset Category" Then
                    Call GetAccessPermission(Me, "frmFixedAssetCategory")
                    mstrGroupType = "Fixed Asset Category Details"
                End If

                mstrFieldName = "Category"
                mstrIdFieldName = "CategoryId"
                grbUnit.Visible = False
                grbCategory.Visible = True
                grbCategory.BringToFront()
            End If

            Me.Text = mstrGroupType

            Call initializeMenu()
            Call setPBRecords(Me, pbRecords)

            mblnActivate = True
            mblnChanged = False
        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Function blnSaveRecords() As Boolean
        Dim blnIsTransactionOpen As Boolean
        Dim strQuery As String = ""

        Try
            blnSaveRecords = False
            If Me.Tag.ToString = "Units" Then
                If Trim(txtUnit.Text) = "" Then
                    MessageBox.Show("Specify Unit", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtUnit.Focus()
                    Exit Function
                End If

                strQuery = mstrFieldName.ToLower & "='" & Replace(Trim(txtUnit.Text), "'", "''") & "'" & _
                            IIf(mstrMode = "Edit", " and " & mstrIdFieldName & " <>" & mlngRecordID, "")
                If strRecordID(mstrTableName, "1", strQuery) <> "Null" Then
                    MessageBox.Show("This " & Me.Tag.ToString.ToLower & " already exists", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtUnit.Focus()
                    Exit Function
                End If

            ElseIf Me.Tag = "Category" Then
                If txtCategoryName.Text = "" Then
                    MessageBox.Show("Specify Category", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtCategoryName.Focus()
                    Exit Function
                End If
                strQuery = mstrFieldName.ToLower & "='" & Replace(Trim(txtCategoryName.Text), "'", "''") & "' and IsFixed=0 " & _
                            IIf(mstrMode = "Edit", " and " & mstrIdFieldName & " <>" & mlngRecordID, "")
                If strRecordID(mstrTableName, "1", strQuery) <> "Null" Then
                    MessageBox.Show("This " & Me.Tag.ToString.ToLower & " already exists", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtCategoryName.Focus()
                    Exit Function
                End If
            ElseIf Me.Tag = "Fixed Asset Category" Then
                If txtCategoryName.Text = "" Then
                    MessageBox.Show("Specify Category", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtCategoryName.Focus()
                    Exit Function
                End If
                strQuery = mstrFieldName.ToLower & "='" & Replace(Trim(txtCategoryName.Text), "'", "''") & "' and IsFixed=1 " & _
                            IIf(mstrMode = "Edit", " and " & mstrIdFieldName & " <>" & mlngRecordID, "")
                If strRecordID(mstrTableName, "1", strQuery) <> "Null" Then
                    MessageBox.Show("This " & Me.Tag.ToString.ToLower & " already exists", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtCategoryName.Focus()
                    Exit Function
                End If

            End If

            If blnUnload = False Then
                If MessageBox.Show("Are you sure to " & IIf(mstrMode = "Add", "add", "modify") & " this record", gstrMessage, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
                    'If Me.Tag.ToString = "Stocking Point" And chkType.Checked = True Then grdDataEntry.EmbeddedNavigator.Buttons.CancelEdit.DoClick()
                    If Me.Tag.ToString = "Units" Then
                        txtUnit.Focus()
                    ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then
                        txtCategoryName.Focus()
                    End If
                    Exit Function
                End If
            End If

            gtrnWebPlusMed = gconWebPlusMed.BeginTransaction
            blnIsTransactionOpen = True

            If mstrMode = "Add" Then
                mlngRecordID = lngAutogeneratePrimaryKey(mstrTableName, mstrIdFieldName)
                If Me.Tag.ToString = "Units" Then
                    strQuery = mlngRecordID & _
                                "," & SmartReplace(txtUnit.Text) & _
                                                               "," & SmartReplace(gstrUserName & "-" & Format(gdtCurrentDate, "dd-MMM-yyyy hh:mm:ss tt"))
                ElseIf Me.Tag.ToString = "Category" Then
                    strQuery = mlngRecordID & _
                                "," & SmartReplace(txtCategoryName.Text) & _
                                "," & SmartReplace(gstrUserName & "-" & Format(gdtCurrentDate, "dd-MMM-yyyy hh:mm:ss tt")) & _
                                ",0"
                ElseIf Me.Tag.ToString = "Fixed Asset Category" Then
                    strQuery = mlngRecordID & _
                                "," & SmartReplace(txtCategoryName.Text) & _
                                "," & SmartReplace(gstrUserName & "-" & Format(gdtCurrentDate, "dd-MMM-yyyy hh:mm:ss tt")) & _
                                ",1"
                End If
                Call InsertintoTable(mstrTableName, strQuery)
            ElseIf mstrMode = "Edit" Then
                If Me.Tag.ToString = "Units" Then
                    strQuery = "Units=" & SmartReplace(txtUnit.Text) & _
                               " , LastModified=" & SmartReplace(gstrUserName & "-" & Format(gdtCurrentDate, "dd-MMM-yyyy hh:mm:ss tt"))
                    Call UpdateTable(mstrTableName, strQuery, mstrIdFieldName & " =" & mlngRecordID)
                ElseIf Me.Tag.ToString = "Category" Then
                    strQuery = "Category=" & SmartReplace(txtCategoryName.Text) & _
                    " , LastModified=" & SmartReplace(gstrUserName & "-" & Format(gdtCurrentDate, "dd-MMM-yyyy hh:mm:ss tt"))
                    Call UpdateTable(mstrTableName, strQuery, mstrIdFieldName & " =" & mlngRecordID & " and IsFixed=0")
                ElseIf Me.Tag.ToString = "Fixed Asset Category" Then
                    strQuery = "Category=" & SmartReplace(txtCategoryName.Text) & _
                    " , LastModified=" & SmartReplace(gstrUserName & "-" & Format(gdtCurrentDate, "dd-MMM-yyyy hh:mm:ss tt"))
                    Call UpdateTable(mstrTableName, strQuery, mstrIdFieldName & " =" & mlngRecordID & " and IsFixed=1")
                End If

            End If
            blnSaveRecords = True

            gtrnWebPlusMed.Commit()
            blnIsTransactionOpen = False

        Catch ex As Exception
            If blnIsTransactionOpen = True Then
                gtrnWebPlusMed.Rollback()
            End If
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Function

    Private Sub ClearControls()
        Try
            Call Clearfields(grbUnit)
            Call Clearfields(grbCategory)
        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Public Sub PopulateData()
        Dim dsRecords As DataSet   'For populating data in XtraGrid
        Dim strQuery As String = ""
        Dim strTemp As String = ""
        Dim intCtr As Int16

        Try
            pbRecords.Position = 40 : Application.DoEvents()

            For intCtr = 0 To mstrMenuList.GetUpperBound(0) - 1
                If mstrMenuList(intCtr)(1) <> 1 And mstrMenuList(intCtr)(2) <> 0 Then
                    strTemp = mstrMenuList(intCtr)(3)
                    strQuery = strQuery & "," & strTemp & " [" & mstrMenuList(intCtr)(0) & "]"
                End If
            Next

            If Me.Tag.ToString = "Units" Then
                strQuery = "select U.UnitId [record_id] " & strQuery & " from tblInventoryUnits U Order by U.Units"
            ElseIf Me.Tag.ToString = "Category" Then
                strQuery = "Select C.CategoryId [record_id] " & strQuery & " from tblCategory C Where C.IsFixed=0 order by C.Category"
            ElseIf Me.Tag.ToString = "Fixed Asset Category" Then
                strQuery = "Select C.CategoryId [record_id] " & strQuery & " from tblCategory C Where C.IsFixed=1 order by C.Category"
            End If
            dsRecords = FillDataSet(strQuery)

            gdvRecords.Columns.Clear()

            With grdRecords
                .BeginUpdate()
                .DataSource = dsRecords.Tables(0)
                .EndUpdate()
            End With
            dsRecords.Dispose()

            With gdvRecords
                'Primary Key Field
                .Columns("record_id").Visible = False
                .Columns("record_id").OptionsColumn.ShowInCustomizationForm = False

                .BestFitColumns()
            End With
            pbRecords.Position = 80 : Application.DoEvents()
            'To set row count
            gdvRecords_ColumnFilterChanged(Nothing, Nothing)

        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub btnExpand_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExpand.Click
        If mblnExpanded = True Then
            mblnExpanded = False
            btnExpand.Image = mdiMain.imgEditIcons.Images(0)
            grdRecords.Width = 190
            Call btnCancel_Click(Nothing, Nothing)
        Else
            mblnExpanded = True
            btnExpand.Image = mdiMain.imgEditIcons.Images(1)
            grdRecords.Width = 580 : grdRecords.BringToFront()
            If gdvRecords.RowCount > 0 Then mlngRecordID = lngGetSelectID(gdvRecords, "record_id")
        End If
        grdRecords.Focus()
    End Sub

    Private Sub DisplayData()
        Dim dsTemp As DataSet

        Try
            Dim strQuery As String = ""
            strQuery = "Select * from " & mstrTableName & " Where " & mstrIdFieldName & " = " & mlngRecordID
            dsTemp = FillDataSet(strQuery)

            With dsTemp.Tables(0)
                If .Rows.Count > 0 Then
                    If Me.Tag.ToString = "Units" Then
                        txtUnit.Text = Trim(.Rows(0).Item("Units") & "")
                    ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then
                        txtCategoryName.Text = Trim(.Rows(0).Item("Category") & "")
                    End If
                End If
            End With
            dsTemp.Dispose()

        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        Call EnableDisableControls(True)

        If mstrMode = "Add" Then
            If gdvRecords.RowCount > 0 Then
                mlngRecordID = lngGetSelectID(gdvRecords, "record_id")
                DisplayData()
            Else
                Call ClearControls()
                btnEdit.Enabled = False : btnDelete.Enabled = False
            End If
        Else
            If gdvRecords.RowCount = 0 Then
                Call ClearControls()
                btnEdit.Enabled = False : btnDelete.Enabled = False
            Else
                DisplayData()
            End If
        End If

        Me.Text = mstrGroupType

        mstrMode = ""
        mblnChanged = False
    End Sub

    Private Sub EnableDisableControls(ByVal blnEnable As Boolean)
        If blnAdd = True Then btnAdd.Enabled = blnEnable
        If blnEdit = True Then btnEdit.Enabled = blnEnable
        If blnDelete = True Then btnDelete.Enabled = blnEnable

        btnSave.Enabled = Not (blnEnable)
        btnCancel.Enabled = Not (blnEnable)
        grbControls.Enabled = Not (blnEnable)
    End Sub

    Private Sub gdvRecords_ColumnFilterChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gdvRecords.ColumnFilterChanged
        gdvRecords.Columns(1).SummaryItem.SetSummary(DevExpress.Data.SummaryItemType.Count, "Total {0} Record(s)")

        Dim lngTemp As Long = lngGetSelectID(gdvRecords, "record_id")
        If mlngRecordID <> lngTemp Or btnCancel.Enabled = True Then
            gdvRecords_FocusedRowChanged(Nothing, Nothing)
        End If
    End Sub

    Private Sub gdvRecords_CustomDrawRowIndicator(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs) Handles gdvRecords.CustomDrawRowIndicator
        SetRowIndicator(e)
    End Sub

    Private Sub gdvRecords_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles gdvRecords.DoubleClick
        If btnEdit.Enabled = True Then
            btnEdit_Click(Nothing, Nothing)
        End If
    End Sub

    Private Sub gdvRecords_FocusedRowChanged(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles gdvRecords.FocusedRowChanged
        Try
            If mblnCancelDisplay = True Then Exit Sub

            mlngRecordID = lngGetSelectID(gdvRecords, "record_id")

            If gdvRecords.RowCount > 0 Then
                btnEdit.Enabled = blnEdit : btnDelete.Enabled = blnDelete

            Else
                ClearControls()
                btnEdit.Enabled = False : btnDelete.Enabled = False
            End If
            btnAdd.Enabled = blnAdd

            If mlngRecordID = 0 Then Exit Sub

            If mblnExpanded = True Then Exit Sub

            Call btnCancel_Click(Nothing, Nothing)

        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub gdvRecords_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles gdvRecords.GotFocus
        If btnCancel.Enabled = True And Me.Visible = True Then Call btnCancel_Click(Nothing, Nothing)
    End Sub

    Private Sub gdvRecords_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles gdvRecords.KeyDown
        Try

            If e.KeyCode = Keys.Delete And btnDelete.Enabled = True Then
                Call btnDelete_Click(Nothing, Nothing)
            ElseIf e.KeyCode = Keys.Return And btnDelete.Enabled = True Then
                Call gdvRecords_DoubleClick(Nothing, Nothing)
            ElseIf e.KeyCode = Keys.Escape Then
                Call btnClose_Click(Nothing, Nothing)
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDelete.Click
        Dim blnTrnasaction As Boolean

        Try
            If MessageBox.Show("Are you sure you want to permanently delete this record?", gstrMessage, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                gtrnWebPlusMed = gconWebPlusMed.BeginTransaction
                blnTrnasaction = True

                Call DeleteFromTable(mstrTableName, mstrIdFieldName & " = " & mlngRecordID)

                gtrnWebPlusMed.Commit()
                blnTrnasaction = False

                MessageBox.Show("Record deleted", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Information)
                SendKeys.Send("{F5}")
            End If

        Catch ex As Exception
            If blnTrnasaction = True Then
                gtrnWebPlusMed.Rollback()
            End If
            MessageBox.Show("Record in use" & vbCrLf & "Cannot delete", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            'MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub btnClose_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClose.Click
        Me.Close()
    End Sub

    Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        Try

            If mblnExpanded = True Then btnExpand_Click(Nothing, Nothing)

            Call EnableDisableControls(False)
            mstrMode = "Add"
            mlngRecordID = 0
            Call ClearControls()
            mblnChanged = False

            Me.Text = mstrGroupType & " [Add]"


            If Me.Tag.ToString = "Units" Then
                txtUnit.Focus()

            ElseIf Me.Tag.ToString = "Category" Or Me.Tag.ToString = "Fixed Asset Category" Then
                txtCategoryName.Focus()
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim lngTemp As Long, lngRowID As Long

        Try

            If mblnChanged = False And mstrMode <> "Add" Then
                btnCancel_Click(Nothing, Nothing)
                Exit Sub
            End If
            If blnSaveRecords() = False Then Exit Sub

            lngTemp = mlngRecordID

            pbRecords.Visible = True
            pbRecords.BringToFront()
            Application.DoEvents()
            pbRecords.Position = 20

            gdvRecords.OptionsSelection.EnableAppearanceFocusedRow = False
            gdvRecords.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None
            mblnCancelDisplay = True
            Call PopulateData()
            mblnCancelDisplay = False

            pbRecords.Position = 95
            If gdvRecords.RowCount > 0 Then
                lngRowID = LocateRowBySingleValue(grdRecords, lngTemp)
                gdvRecords.FocusedRowHandle = lngRowID
                If lngRowID = 0 Then gdvRecords_FocusedRowChanged(Nothing, Nothing)
            Else
                Call btnCancel_Click(Nothing, Nothing)
            End If
            gdvRecords.OptionsSelection.EnableAppearanceFocusedRow = True
            gdvRecords.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus

            pbRecords.Position = 100
            pbRecords.Visible = False
            If mblnFrmOutside = True Then
                mlngLookUpId = mlngRecordID
                Me.Close()
            End If
            'End If

        Catch ex As Exception
            pbRecords.Visible = False
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub btnEdit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEdit.Click
        Try

            If mblnExpanded = True Then btnExpand_Click(Nothing, Nothing)

            Call EnableDisableControls(False)
            mblnChanged = False
            mstrMode = "Edit"

            Me.Text = mstrGroupType & " [Edit]"

            If Me.Tag.ToString = "Units" Then
                txtUnit.Focus()
            ElseIf Me.Tag.ToString = "Category" Then
                txtCategoryName.Focus()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
                 Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
        End Try
    End Sub

    Private Sub txtUnit_EditValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUnit.EditValueChanged
        mblnChanged = True
    End Sub

    Private Sub txtCategoryName_EditValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCategoryName.EditValueChanged
        mblnChanged = True
    End Sub

    Private Sub txtUnit_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUnit.GotFocus
        txtUnit.SelectAll()
    End Sub

    Private Sub txtCategoryName_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCategoryName.GotFocus
        txtCategoryName.SelectAll()
    End Sub
End Class
